Rendering virtual environments using container effects

ABSTRACT

In one embodiment, a computer implemented method for rendering virtual environments is disclosed. The method includes associating by a computing system, virtual object with a container effect, by receiving information regarding an object category for the object and matching the object category to a category associated with the container effect, where the container effect defines virtual effects for objects associated therewith. The method also includes generating by the computing system a virtual environment including the virtual object by retrieving a model of the object and utilizing the model and the container effect to render a virtual object.

FIELD

The present disclosure relates generally to alternative reality andvirtual reality experiences and effects.

BACKGROUND

Alternative and virtual reality experiences are increasingly used toallow consumers to experience products in a more realistic environment.Virtual reality (VR) refers to a simulated environment created bycomputer technology. Augmented reality (AR) refers a live direct orindirect view of a physical, real-world environment whose elements areaugmented (e.g., supplemented) by computer technology. VR and/or AR canbe presented to a user through an ARNR system. In some examples, an ARNRsystem includes an ARNR headset that provides visual and audioinformation to the user.

Augmented or virtual reality effects (referred to as AR effects herein)may be used to render objects appearing in the effects. AR effects maybe displayed through a variety of devices. For example,augmented-reality effects may be displayed on a user's ARNR headset,mobile phone, tablet, laptop, computer monitor, television, or any otherdisplay devices.

SUMMARY

In one embodiment, a computer implemented method for rendering virtualenvironments is disclosed. The method includes associating by acomputing system, an object with a container effect, such as byreceiving information regarding an object category for the object andmatching the object category to a category associated with the containereffect, where the container effect defines virtual effects for objectsassociated therewith. The method also includes generating by thecomputing system a virtual environment including the object byretrieving a model of the object an utilizing the model and thecontainer effect to render a virtual object.

In another embodiment, a computer implemented method is disclosed, themethod including associating by a computer system a first object with afirst container effect, the first container effect defining one or morevirtual effects, associating by the computer system a second object withthe first container effect, and publishing by the computer system anenvironment including the first object and the second object byretrieving and applying the one or more virtual effects defined by thefirst container effect to a model of the first object and a model of thesecond object.

In yet another embodiment, a computer readable medium includinginstructions that when executed by at least one process of a computingsystem cause the computing system to perform a method is disclosed. Themethod includes assigning an object to a container effect, the containereffect determining effect characteristics for the object in a virtualenvironment, retrieving shape information for the object, rendering avirtual object by applying the effect characteristics of the containereffect to the shape information of the object, generating an effectdisplay by integrating the virtual object with image data, and providingthe effect display for presentation.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a computing system for implementing virtual effectsfor an object within a virtual environment.

FIG. 2 illustrates an example of a virtual reality experience usingobjects rendered with the system of FIG. 1.

FIG. 3 illustrates a flow chart for associating objects with containereffects.

FIG. 4 illustrates a flow chart for publishing a virtual realityexperience using container effects.

FIG. 5 illustrates a flowchart for using a collection of objects topublish a virtual reality experience.

FIG. 6 illustrate a simplified block diagram of one or more computingdevices that can be incorporated into the computing system of FIG. 1.

FIG. 7 illustrates an example network environment associated with asocial-networking system.

DETAILED DESCRIPTION

The present disclosure includes methods to integrate objects, such asproducts, from different sources or parties into a single alternativereality (AR) or virtual reality experience by utilizing containers.Container effects include predetermined AR effects, such as lighting,trackers, transitions, orientation, etc., that may be applied to one ormore objects associated with the containers.

Typically, a container effect will be defined for a category of objects,e.g., furniture, makeup, clothing, etc. As objects are added to andatabase from different sources, the objects are associated with aselect container effect and when published within an AR and/or VRexperience adopt the AR effects defined by the container effect, ratherthe AR effects being combined with and defined in conjunction with theshape information of the object. The separation between effects andshape information allows the shape information to be stored separatelyfrom the AR effects, such that new objects can be added into an on-goingAR experience without having to recreate the AR effects. Additionally,multiple objects associated with the same container effect can be addeddirectly into a currently rendered AR experience, since no separaterendering of object specific AR effects may be needed. As AR experienceswith objects are built by a user, a user can define a collection of theobjects, which can be saved and transmitted to other users. Other userscan then modify and update the collection, by adding or replacingobjects associated with the defined container effect into the ARexperience.

As a specific example, models of sofas from different retailers maybeadded to the AR database and associated with a predetermined furniturecontainer effect. As a particular sofa is selected for an AR experience,the system renders the AR effect defined by the furniture containereffect (rather than the specific effect for the selected sofa) and thesofa is placed in the AR experience. As additional objects associatedwith the container type are selected for the AR experience, the 3Dmodels are retrieved and dynamically placed into the environment,without having to re-render the AR effects.

It should be noted that the term AR experience is meant to encompass alltypes of virtual or digitally displayed and/or digitally supplementedenvironments, such as those that incorporate a physical environmentand/or allow a user to interact within a completely virtual environment(e.g., VR environment). For example, the AR environment may include areal-world scene with computer generated objects composited with thescene or alternatively allow a user to interact with or view objectsfrom different viewpoints and angles. The AR environment may includebackground or other image data from a user device or may not include anyimage data from a user device. As such, the term AR should beinterpreted to encompass both VR and AR environments, content, and thelike.

FIG. 1 illustrates a computing system 100 for generating AR experiencesincluding one or more computing resources, such as servers 102, 104,106, one or more networks 108, and one or more user devices 110, 112,where the network 108 provides communication between the servers 102,104, 106 and the user devices 110, 112 (either directly or indirectly).During operation, the servers 102, 104, 106 provide objects, content,and AR effects that are displayed on the user devices 110, 112.

The servers or databases 102, 104, 106 maybe substantially any type ofcomputing resource, such as, but not limited to, a database, computingelements, cloud databases, virtual distributed databases, and the like.In one embodiment, a first server may include an object database 102that receives and stores information related to objects, such as, shapeinformation, three-dimensional (3D) information or models (e.g., gITF,glb, computer aided design models) and other information that can beused to generate virtual representations of objects. The object database102 may receive information from third parties, such as, vendors,clients, retailers, and other partners and may include shape informationrelated to objects that partners wish to have represented within an ARenvironment. For example, the object database 102 may include a retailercatalog having retail products or items that are offered by the thirdparty (e.g., goods). In addition to the shape information, the objectdatabase 102 may also include color, texture, and other information thatmay be useful for rendering purposes and/or object options thatcorrespond to variations of the product. The object database 102 alsoincludes an effect or object category that identifies the particulartype of container effect to be applied to the object in the ARenvironment. For example, the object database 102 may also include alink, reference, or other pointer, such as a uniform resource identifier(URI), that identifies a container effect to be applied to the object.

The second server may be an effect database 104, that stores AR effectsfor objects. In particular, container effects are stored in the effectdatabase 104. The effect database 104 may include various types of AReffects or virtual effects, such as constraints, or rules that can beapplied to the object to render a realistic AR experience. AR effectsinclude trackers, positioning information, lighting, multiplanetracking, frame transitions, tracker templates with predeterminedpositions, interconnectivity between objects and trackers, and the like.In some embodiments, the AR effects may be stored based on a category ortype and are applicable to multiple objects, in this manner, the effectdatabase can function as a lookup table or other repository for AReffects for object types.

The third server may be a content database 106 that stores AR content,such as an AR environment, and other information that may beincorporated into an AR experience on the user device. Additionally, thecontent database 106 may be used to generate AR effect links bycombining a particular object (e.g., shape information and texture) withits corresponding effect type to publish the AR effect on a user device.

It should be noted that the various servers 102, 104, 106 or databasesmay on a single computing device and/or split across various servers,computing devices, as needed. As such, the discussion of any particularserver or database is not meant as a separate physical device, but aseparate resource or allocation location.

The network 108 is substantially any type of data communicationmechanism and may include multiple different communication pathways. Forexample, the network 108 may be the Internet, WiFi, Bluetooth, Zigbee,cellular transmissions, local area network, wireless network, telephonenetwork, and the like, as well as a combination of two or morecommunication mechanisms.

The user devices 110, 112 are computing devices utilized by one or moreusers to access or otherwise view an AR experience. For example, theuser devices 110, 112 may be smartphones, tablet computers, wearabledevices (e.g., smart glasses, heads-up displays), laptop computers,desktop computers, smart television, IoT devices, and the like. In someinstances, the system 100 includes multiple users and may include afirst user device 110 corresponding to a first user and a second a userdevice 112 corresponding to a second user. Generally, the user devices110, 112 may include a display screen or other image forming element anda camera, where the camera can be used to capture image information forobjects that can be displayed in the AR environment.

FIG. 2 illustrates an example of an AR experience rendered on a userdevice 110 utilizing the system 100. With reference to FIG. 2, the ARexperience 114 includes objects, such as those from the object database102, that are rendered with the associated container effect, from theeffect database 104, to create a realistic user experience. In someinstances, the background or select objects within the AR environmentmay be those detected from the user device 110 (e.g., via the camera),allowing the AR experience 114 to blend or composite virtually generatedobjects or effects with physical world objects. In the specific exampleof FIG. 2, there are five different objects that are pulled fromdifferent parties or locations (e.g., from different retailerdatabases), which may be selected by a user, to be included in the ARexperience 114. For example, a first object 120 (sofa in this example)may be selected from an AR effect originating from ad on an onlineadvertising platform or social media platform 132, such as Facebook, asecond object 118 may be selected from a third party website 134, suchas via an Instagram AR effect, invoked from the third party retailerwebsite 134, a third object 124 may be retrieved from an online auctionor classifieds website 136, such via an Instagram Shopping AR effect136, a fourth object 114 may be an AR effect invoked or retrieved from aphysical store 126 (e.g., from a picture of the object captured by theuser device or code) or a third party catalogue (online or hard copy),e.g., an AR effect on the Instagram app invoked by a product code.Additionally, other objects or AR effects may be selected by the userfor inclusion in the AR experience from other sources, such as a productcatalogue 128, and/or AR devices 130 (e.g., glasses, head mounteddisplays, other wearables). For example, other AR effects may beselected 123 by the user through visually search for an item that'sviewed through AR wearables 130 (e.g., glasses, head mounted displays).

As shown in FIG. 2, multiple virtual objects are positioned within theAR experience 114 where the virtual objects can be selected from varioussources and rendered together. Additionally, the virtual objects arerendered depending on the object type, such that the AR effects do notneed to be recreated as new objects are added or removed into the ARexperience 114, such as replacing a first object with a second object.This is because the container effect is stored in the effect database104 and is separated from the object model and other shape information.For example, the same AR lighting effect may be applied to all objectswithin a select container and as virtual objects are replaced within anAR experience 114 with the container effect, the same lighting effectmay be applied.

FIG. 3 illustrates a method 150 of associating objects with a particularAR effect. The method 150 begins with operation 152 and the object modelis received. For example, a third party may transmit an object model tothe object database 102, where the object model includes shapeinformation, such as 3D information, that can be used to generate avirtual representation of the object. As another example, a user maycapture multiple pictures of an object, that can then be used togenerate shape information, such as a 3D mesh.

In operation 154 the object is associated with a container effect. Forexample, an object category or type may be determined, such as via auser input, analysis of metadata and other information coupled to theobject, or the like. Once the object type or category has beenidentified, the type is matched with one or more corresponding containereffects. For example, for a furniture object, such as a sofa, the systemmay determine that the object is “furniture” based on metadataaccompanying the shape information and then may identify the containereffect for “furniture.” The identification of an object and a particularcontainer effect can be done in various manners, including imagerecognition, artificial intelligence, metadata review, and the like. Inthis manner, the effects may be abstracted from the object and thematching done between the container category and the object category.

In operation 156, the object shape information (e.g., 3D model) andassociated container effect may be validated. For example, the objectshape information is analyzed with respect to the selected AR effectstied to the associated container effect to determine if they are correctfor the object and whether there are artifacts or issues presentedduring rendering of the object with the designated AR effects. Thevalidation may also include determining whether the shape informationfor the object is sufficient to render the AR effects, e.g., is acomplete model and includes the necessary information to show the objectsufficiently within the AR environment. In one example, the validationstep may include rendering the AR effect for the object within a testingor sample AR environment, and analyzing the rendered AR test environmentfor potential issues, artifacts, or the like.

In operation 158, an identifier or tag for the object and containereffect association is generated. For example, a link (e.g., URI) may begenerated that identifies the location of the object shape information,such as on object database 102, and the container effect associated withthe object, such as from the effect database 104. The identifier may bean address or other locator for the shape information for the object andan address or other locator for the respective container effect. As oneexample, the URI may include a lookup table that identifies a particularmemory location for the object shape information within the objectdatabase 102 and a particular memory location for the particularcontainer effect within the effect database 104. In other examples, theidentifiers may directly link to the respective memory locations for theobject shape information and the container effect. Once an identifier isgenerated, the system 100 may be able to utilize the object shapeinformation in an AR experience 114 by separately retrieving the AReffects defined by the associated container effect and effects within aparticular AR container can be applied to multiple objects.

By genericizing AR effects to be applicable to categories of objects andassigning objects an AR effect based on the category, the computingsystem 100 of FIG. 1 can generate AR experiences using objects frommultiple different sources that may or may not be in communication orrelated to each other, e.g., a first object from a first retailer can beincorporated into an AR experience with a second object from a secondretailer, unrelated to the first retailer. Conventional AR experiencesare typically specific to a particular object source and combinationsacross platforms and parties is not possible. Further, specificallyrendering AR effects for individual objects is resource and timeintensive and limits the number of objects that can be included withinan AR experience. The combination and aggregation of objects within anAR experience allows a user to more easily envision and interact withthe AR experience in a more realistic manner, e.g., more similar to theway a consumer shops for products in a physical store or mall.

FIG. 4 illustrates a method 200 for utilizing the container effects andobject association to render an AR experience. The method 200 includesoperation 202 and image data may be received, such as from the userdevice 110. The image data may be data captured from a camera on theuser device 110 and may often form the background or select aspects ofthe AR experience 114. For example, the user may capture an image of aroom that the user wishes to explore placement of different objectswithin. The image data may be a still image or video images (e.g., oneframe or multiple frames). In other embodiments, such as AR experienceswhere a user may virtually explore a virtual world, this operation maybe omitted.

In operation 204, an object effect request is transmitted from a userdevice 110 to a server, such as content database 106. The object effectrequest may include a selection from a user indicating an object thatthe user wishes to include in the AR experience 114. The object effectrequest may be via a link selection (e.g., from a third party website orapplication), from an analysis of an image to determine an object forthe AR experience 114 (e.g., barcode scan, QR scan, image recognition,etc.), or other input mechanisms from the user. The type of objecteffect request may be varied depending on the environment where the useridentifies the object (e.g., website, social media platform, physicalstore, catalogue, etc.).

In operation 206, the identifier for the object is retrieved. Forexample, the identifier generated in method 150 of FIG. 3, may beretrieved from a storage location, such as on the object database 102 orcontent database 106. The identifier may be retrieved by identifying theobject reference or locator and using the object reference to lookup theidentifier.

In operation 208, the identifier is used to retrieve the AR effects forthe object. For example, the identifier is used to locate the selectedcontainer effect associated with the object, such as the location in theeffect database 104. In some instances the identifier may point to aselected container and the effects are determined based on the containerassociated therewith.

In operation 210, the shape information or the object model isretrieved. For example, the identifier may include a location for theshape information for the object on the object database 102. In thismanner, the shape information may be dynamically added to the effect. Insome embodiments, the shape information may be hosted on a centralobject repository (e.g., one that stores information for objects frommultiple sources) and in other embodiments the object shape informationmay be used hosted on a party specific repository, such as a retailerdatabase.

In operation 212, the retrieved shape information and the AR effectsdefined by the container effect for the object are used to publish theAR experience 114. For example, the selected object is overlaid,integrated, composited, or otherwise included into the image datacaptured by the user device 110, to generate an AR experience. Or may beincorporated into another virtual image, such as a virtual world. As aspecific example, as the user is capturing an image or video of aparticular space, such as a room in a house or apartment, the user canidentify an object, such as a sofa from a retailer via the retailer'swebsite. Using shape information for the sofa and predetermined effectsfor a “sofa” or “furniture” category of container effects, the lighting,positioning, transition, and other AR effects, defined by the category,are used to render the sofa within the image data. This allows the userto visualize the particular object, e.g., sofa, within the room andexperience the sofa with lighting, positioning, and other definedeffects that increase the realism of the AR experience 114.

In operation 216, the method 200 may include determining whetheradditional objects are added or whether there are changes to theincluded objects (e.g., change in color, texture, or the like). Forexample, the user may provide an input to select additional objects toinclude within the AR environment, similar to operation 204. As aspecific example, the user may want to add a lamp within the ARexperience 114 including the sofa, and select a lamp from an online orphysical location to include in the AR experience 114.

If an additional object is selected, the method 200 may proceed tooperation 214 and the identifier for the additional object is retrieved.This operation may be substantially the same as operation 206. Themethod 200 then returns to operation 210 and the model is retrieved andoperation 212 the updated AR environment is published. In someinstances, the effect for the object may not need to be retrieved (i.e.,operation 208 is omitted for additional objects), since the effects maybe applicable to the same types of objects, e.g., a furniture category,as long as the container effect is the same between the two objects. Inthese instances, the method 200 may optionally include a validationoperation where the container effect for the new object is compared tothe currently rendered container effects to determine if a change isneeded. Alternatively, the user may be restricted at the input stagefrom adding objects with different container effect categories into acurrently published environment.

If in operation 216, no additional objects are added, the method 200 mayproceed to operation 218 and optionally a collection or user look can becaptured or saved. The collection may save the objects included in theAR experience and/or the identifiers associated with the objects. Insome instances, the background image data from the user device may alsobe included. The collection may allow a user to easily re-render the ARexperience 114. For example, the user may identify a particularassortment of objects, e.g., sofa 120, table 123, painting 116, etc.,that the user wishes to try out in different rooms or other differentbackground data. By saving the collection, the user can easily andquickly publish the AR experience with new image data.

Additionally, the collections may be transmitted to other user devicesor users, e.g., via messaging systems, email, social media platforms,URLs, or other mediums. FIG. 5 illustrates a method 250 for using acollection to transmit AR experiences to other user devices, such asuser device 110 to user device 112. In operation 252, the second userdevice 112 may receive a collection, such as from the first user device110. The collection includes object information and optionally thecontainer effect identifier.

In operation 254, the second user object specific variations, such ascolor, texture, size, and the like, may be received. For example, adisplay screen may be presented that links to the object location, e.g.,retailer website, advertisement, or the like, including options for auser to identify object specifics, parameters, or variants that the userwants to include in the AR experience, e.g., color, size, texturing,etc.

Using the object specific variations, as well as the object identifier,in operation 256 the effects defined by the container effect associatedwith the object are retrieved, such as from the effect database 104. Inoperation 258, the shape information for the object is then retrieved,such as from the object database 102.

In operation 260, image data may be retrieved, such as new background orother environmental information from the user device 112 or the like. Inthis manner, the second user can incorporate the objects within a newand user specific environment. Then, in operation 262 the AR experience114 is published, including the objects and the new image data.

FIG. 6 illustrates a simplified block diagram of one or more computingdevices or computing nodes that may be used within the system 100, e.g.,servers 102, 104, 106, and/or user devices 110, 112. In particularembodiments, one or more computer systems 300 perform one or more stepsof one or more methods described or illustrated herein, e.g., methods150, 200, 250. Software running on one or more computer systems 300performs one or more steps of one or more methods described orillustrated herein or provides functionality described or illustratedherein. Particular embodiments include one or more portions of one ormore computer systems 300. Reference to a computer system may encompassa computing device, and vice versa, where appropriate. Moreover,reference to a computer system may encompass one or more computersystems, where appropriate.

Any suitable number of computer systems 300 may be included within thesystem 100 and the computer systems 300 utilized can take variousphysical forms. As example, computer system 300 may be an embeddedcomputer system, a system-on-chip (SOC), a single-board computer system(SBC) (such as, for example, a computer-on-module (COM) orsystem-on-module (SOM)), a desktop computer system, a laptop or notebookcomputer system, an interactive kiosk, a mainframe, a mesh of computersystems, a mobile telephone, a personal digital assistant (PDA), aserver, a tablet computer system, an augmented/virtual reality device,or a combination of two or more of these. Where appropriate, computersystem 300 may include one or more computer systems 300; be unitary ordistributed; span multiple locations; span multiple machines; spanmultiple data centers; or reside in a cloud, which may include one ormore cloud components in one or more networks. One or more computersystems 300 may perform without substantial spatial or temporallimitation one or more steps of one or more methods described orillustrated herein, e.g., methods 150, 200, 250. As an example, one ormore computer systems 300 may perform in real time or in batch mode oneor more steps of one or more methods described or illustrated herein.One or more computer systems 300 may perform at different times or atdifferent locations one or more steps of one or more methods describedor illustrated herein, where appropriate.

The computer system 300 may include one or more of the followingcomponents: processor 302, memory 312, storage 313, an input/output(I/O) interface 308, a communication interface 310, and a bus 311.Although this disclosure describes and illustrates a particular computersystem having a particular number of particular components in aparticular arrangement, this disclosure contemplates any suitablecomputer system having any suitable number of any suitable components inany suitable arrangement.

The processor 302 includes hardware for executing instructions, such asthose making up a computer program. As an example, to executeinstructions, processor 302 may retrieve (or fetch) the instructionsfrom an internal register, an internal cache, memory 312, or storage313; decode and execute them; and then write one or more results to aninternal register, an internal cache, memory 312, or storage 313. Inparticular embodiments, processor 302 may include one or more internalcaches for data, instructions, or addresses. Processor 302 may includeany suitable number of any suitable internal caches, where appropriate.As an example, processor 302 may include one or more instruction caches,one or more data caches, and one or more translation lookaside buffers(TLBs). Instructions in the instruction caches may be copies ofinstructions in memory 312 or storage 313, and the instruction cachesmay speed up retrieval of those instructions by processor 302. Data inthe data caches may be copies of data in memory 312 or storage 313 forinstructions executing at processor 302 to operate on: the results ofprevious instructions executed at processor 302 for access by subsequentinstructions executing at processor 302 or for writing to memory 312 orstorage 313; or other suitable data. The data caches may speed up reador write operations by processor 302. The TLBs may speed upvirtual-address translation for processor 302. In particularembodiments, processor 302 may include one or more internal registersfor data, instructions, or addresses. This disclosure contemplatesprocessor 302 including any suitable number of any suitable internalregisters, where appropriate. Where appropriate, processor 302 mayinclude one or more arithmetic logic units (ALUs); be a multi-coreprocessor; or include one or more processors 302. Although thisdisclosure describes and illustrates a particular processor, thisdisclosure contemplates any suitable processor.

The memory 312 includes main memory for storing instructions forprocessor 302 to execute or data for processor 302 to operate on. As anexample and not by way of limitation, computer system 300 may loadinstructions from storage 313 or another source (such as, for example,another computer system 300) to memory 312. Processor 302 may then loadthe instructions from memory 312 to an internal register or internalcache. To execute the instructions, processor 302 may retrieve theinstructions from the internal register or internal cache and decodethem. During or after execution of the instructions, processor 302 maywrite one or more results (which may be intermediate or final results)to the internal register or internal cache. Processor 302 may then writeone or more of those results to memory 312. In particular embodiments,processor 302 executes only instructions in one or more internalregisters or internal caches or in memory 312 (as opposed to storage 313or elsewhere) and operates only on data in one or more internalregisters or internal caches or in memory 312 (as opposed to storage 313or elsewhere). One or more memory buses (which may each include anaddress bus and a data bus) may couple processor 302 to memory 312. Bus311 may include one or more memory buses, as described below. Inparticular embodiments, one or more memory management units (MMUs)reside between processor 302 and memory 312 and facilitate accesses tomemory 312 requested by processor 302. In particular embodiments, memory312 includes random access memory (RAM). This RAM may be volatilememory, where appropriate. Where appropriate, this RAM may be dynamicRAM (DRAM) or static RAM (SRAM). Moreover, where appropriate, this RAMmay be single-ported or multi-ported RAM. This disclosure contemplatesany suitable RAM. Memory 312 may include one or more memories 312, whereappropriate. Although this disclosure describes and illustratesparticular memory, this disclosure contemplates any suitable memory.

Storage 313 includes mass storage for data or instructions. As anexample and not by way of limitation, storage 313 may include a harddisk drive (HDD), a floppy disk drive, flash memory, an optical disc, amagneto-optical disc, magnetic tape, or a Universal Serial Bus (USB)drive or a combination of two or more of these. Storage 313 may includeremovable or non-removable (or fixed) media, where appropriate. Storage313 may be internal or external to computer system 300, whereappropriate. In particular embodiments, storage 313 is non-volatile,solid-state memory. In particular embodiments, storage 313 includesread-only memory (ROM). Where appropriate, this ROM may bemask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM),electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM),or flash memory or a combination of two or more of these. Thisdisclosure contemplates mass storage 313 taking any suitable physicalform. Storage 313 may include one or more storage control unitsfacilitating communication between processor 302 and storage 313, whereappropriate. Where appropriate, storage 313 may include one or morestorages 313. Although this disclosure describes and illustratesparticular storage, this disclosure contemplates any suitable storage.

The I/O interface 308 includes hardware, software, or both, providingone or more interfaces for communication between computer system 300 andone or more I/O devices. Computer system 300 may include one or more ofthese I/O devices, where appropriate. One or more of these I/O devicesmay enable communication between a person and computer system 300. As anexample and not by way of limitation, an I/O device may include akeyboard, keypad, microphone, monitor, mouse, printer, scanner, speaker,still camera, stylus, tablet, touch screen, trackball, video camera,another suitable I/O device or a combination of two or more of these. AnI/O device may include one or more sensors. This disclosure contemplatesany suitable I/O devices and any suitable I/O interfaces 308 for them.Where appropriate, VO interface 308 may include one or more device orsoftware drivers enabling processor 302 to drive one or more of theseI/O devices. I/O interface 308 may include one or more I/O interfaces308, where appropriate. Although this disclosure describes andillustrates a particular I/O interface, this disclosure contemplates anysuitable I/O interface.

The communication interface 310 includes hardware, software, or bothproviding one or more interfaces for communication (such as, forexample, packet-based communication) between computer system 300 and oneor more other computer systems 300 or one or more networks. As anexample and not by way of limitation, communication interface 310 mayinclude a network interface controller (NIC) or network adapter forcommunicating with an Ethernet or other wire-based network or a wirelessNIC (WNIC) or wireless adapter for communicating with a wirelessnetwork, such as a WI-FI network. This disclosure contemplates anysuitable network and any suitable communication interface 310 for it. Asan example and not by way of limitation, computer system 300 maycommunicate with an ad hoc network, a personal area network (PAN), alocal area network (LAN), a wide area network (WAN), a metropolitan areanetwork (MAN), or one or more portions of the Internet or a combinationof two or more of these. One or more portions of one or more of thesenetworks may be wired or wireless. As an example, computer system 300may communicate with a wireless PAN (WPAN) (such as, for example, aBLUETOOTH WPAN), a WI-FI network, a WI-MAX network, a cellular telephonenetwork (such as, for example, a Global System for Mobile Communications(GSM) network), or other suitable wireless network or a combination oftwo or more of these. Computer system 300 may include any suitablecommunication interface 310 for any of these networks, whereappropriate. Communication interface 310 may include one or morecommunication interfaces 310, where appropriate. Although thisdisclosure describes and illustrates a particular communicationinterface, this disclosure contemplates any suitable communicationinterface.

The bus 311 includes hardware, software, or both coupling components ofcomputer system 300 to each other. As an example and not by way oflimitation, bus 311 may include an Accelerated Graphics Port (AGP) orother graphics bus, an Enhanced Industry Standard Architecture (EISA)bus, a front-side bus (FSB), a HYPERTRANSPORT (HT) interconnect, anIndustry Standard Architecture (ISA) bus, an INFINIBAND interconnect, alow-pin-count (LPC) bus, a memory bus, a Micro Channel Architecture(MCA) bus, a Peripheral Component Interconnect (PCI) bus, a PCI-Express(PCIe) bus, a serial advanced technology attachment (SATA) bus, a VideoElectronics Standards Association local (VLB) bus, or another suitablebus or a combination of two or more of these. Bus 311 may include one ormore buses 311, where appropriate. Although this disclosure describesand illustrates a particular bus, this disclosure contemplates anysuitable bus or interconnect.

A computer-readable non-transitory storage medium or media may includeone or more semiconductor-based or other integrated circuits (ICs)(such, as for example, field-programmable gate arrays (FPGAs) orapplication-specific ICs (ASICs)), hard disk drives (HDDs), hybrid harddrives (HHDs), optical discs, optical disc drives (ODDs),magneto-optical discs, magneto-optical drives, floppy diskettes, floppydisk drives (FDDs), magnetic tapes, solid-state drives (SSDs),RAM-drives, SECURE DIGITAL cards or drives, any other suitablecomputer-readable non-transitory storage media, or any suitablecombination of two or more of these, where appropriate. Acomputer-readable non-transitory storage medium may be volatile,non-volatile, or a combination of volatile and non-volatile, whereappropriate.

As noted above, the system 100 maybe incorporated into or otherwiseutilize one or more social networking systems or environments. FIG. 7illustrates an example network environment 400 including a user 402, aclient system 404, a social networking system 416, and a third partysystem 410, connected to each other via a network 406. The third partysystems 410 and/or client system 404, social networking system 416, mayinclude one or more of the computer resources or databases 102, 104, 106utilized by the system 100 to render one or more of the containereffects.

Although FIG. 7 illustrate a illustrates a particular arrangement ofuser 402, client system 404, social-networking system 416, third-partysystem 410, and network 406, any suitable arrangement of user 402,client system 404, social-networking system 416, third-party system 410,and network 406 may be implemented. As an example, two or more of clientsystem 404, social-networking system 416, and third-party system 410 maybe connected to each other directly, bypassing network 406. As anotherexample, two or more of client system 404, social-networking system 416,and third-party system 410 may be physically or logically co-locatedwith each other in whole or in part. Moreover, although FIG. 7illustrates a particular number of users 402, client systems 404,social-networking systems 416, third-party systems 410, and networks406, various numbers of users 1201, client systems 404,social-networking systems 416, third-party systems 410, and networks 406may be included within the environment 400. As an example, networkenvironment 400 may include multiple users 402, client system 404,social-networking systems 416, third-party systems 410, and networks406.

The user 402 may be an individual (human user), an entity (e.g., anenterprise, business, or third-party application), or a group (e.g., ofindividuals or entities) that interacts or communicates with or oversocial-networking system 416. In particular embodiments,social-networking system 416 may be a network-addressable computingsystem hosting an online social network. Social-networking system 416may generate, store, receive, and send social-networking data, such as,for example, user-profile data, concept-profile data, social-graphinformation, or other suitable data related to the online socialnetwork. Social-networking system 416 may be accessed by the othercomponents of network environment 400 either directly or via network406. In particular embodiments, social-networking system 416 may includean authorization server (or other suitable component(s)) that allowsusers 402 to opt in to or opt out of having their actions logged bysocial-networking system 416 or shared with other systems (e.g.,third-party systems 410), for example, by setting appropriate privacysettings. A privacy setting of a user may determine what informationassociated with the user may be logged, how information associated withthe user may be logged, when information associated with the user may belogged, who may log information associated with the user, whominformation associated with the user may be shared with, and for whatpurposes information associated with the user may be logged or shared.Authorization servers may be used to enforce one or more privacysettings of the users of social-networking system 400 through blocking,data hashing, anonymization, or other suitable techniques asappropriate. Third-party system 410 may be accessed by the othercomponents of network environment 400 either directly or via network406. In particular embodiments, one or more users 402 may use one ormore client systems 404 to access, send data to, and receive data fromsocial-networking system 416 or third-party system 410. Client system404 may access social-networking system 416 or third-party system 410directly, via network 406, or via a third-party system. As an exampleand not by way of limitation, client system 404 may access third-partysystem 410 via social-networking system 416. Client system 404 may beany suitable computing device, such as, for example, a personalcomputer, a laptop computer, a cellular telephone, a smartphone, atablet computer, or an augmented/virtual reality device.

This disclosure contemplates any suitable network 406. As an example andnot by way of limitation, one or more portions of network 406 mayinclude an ad hoc network, an intranet, an extranet, a virtual privatenetwork (VPN), a local area network (LAN), a wireless LAN (WLAN), a widearea network (WAN), a wireless WAN (WWAN), a metropolitan area network(MAN), a portion of the Internet, a portion of the Public SwitchedTelephone Network (PSTN), a cellular telephone network, or a combinationof two or more of these. Network 406 may include one or more networks406.

Links 412 may connect client system 404, social-networking system 416,and third-party system 410 to communication network 406 or to eachother. This disclosure contemplates any suitable links 412. Inparticular embodiments, one or more links 412 include one or morewireline (such as for example Digital Subscriber Line (DSL) or Data OverCable Service Interface Specification (DOCSIS)), wireless (such as forexample Wi-Fi or Worldwide Interoperability for Microwave Access(WiMAX)), or optical (such as for example Synchronous Optical Network(SONET) or Synchronous Digital Hierarchy (SDH)) links. In particularembodiments, one or more links 412 each include an ad hoc network, anintranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a WWAN, a MAN, aportion of the Internet, a portion of the PSTN, a cellulartechnology-based network, a satellite communications technology-basednetwork, another link 412, or a combination of two or more such links412. Links 412 need not necessarily be the same throughout networkenvironment 1200. One or more first links 412 may differ in one or morerespects from one or more second links 412.

CONCLUSION

The methods and systems are described herein with reference to objectscaptured from third party sources and AR environments including userimage data. However, these techniques are equally applicable to othertypes of object data and virtual environments. Additionally, althoughthe discussions presented herein are discussed with respect to select AReffects, in some instances, the types of rendering selections used forthe objects may be varied depending on the environment. As such, thediscussion of any particular embodiment is meant as illustrative only.Further, features and modules from various embodiments may besubstituted freely between other embodiments.

In methodologies directly or indirectly set forth herein, various stepsand operations are described in one possible order of operation butthose skilled in the art will recognize the steps and operation may berearranged, replaced or eliminated without necessarily departing fromthe spirit and scope of the present invention. It is intended that allmatter contained in the above description or shown in the accompanyingdrawings shall be interpreted as illustrative only and not limiting.Changes in detail or structure may be made without departing from thespirit of the invention as defined in the appended claims.

As used herein, “or” is inclusive and not exclusive, unless expresslyindicated otherwise or indicated otherwise by context. Therefore,herein, “A or B” means “A, B, or both,” unless expressly indicatedotherwise or indicated otherwise by context. Moreover, “and” is bothjoint and several, unless expressly indicated otherwise or indicatedotherwise by context. Therefore, herein, “A and B” means “A and B,jointly or severally,” unless expressly indicated otherwise or indicatedotherwise by context.

The scope of this disclosure encompasses all changes, substitutions,variations, alterations, and modifications to the example embodimentsdescribed or illustrated herein that a person having ordinary skill inthe art would comprehend. The scope of this disclosure is not limited tothe example embodiments described or illustrated herein. Moreover,although this disclosure describes and illustrates respectiveembodiments herein as including particular components, elements,feature, functions, operations, or steps, any of these embodiments mayinclude any combination or permutation of any of the components,elements, features, functions, operations, or steps described orillustrated anywhere herein that a person having ordinary skill in theart would comprehend. Furthermore, reference in the appended claims toan apparatus or system or a component of an apparatus or system beingadapted to, arranged to, capable of, configured to, enabled to, operableto, or operative to perform a particular function encompasses thatapparatus, system, component, whether or not it or that particularfunction is activated, turned on, or unlocked, as long as thatapparatus, system, or component is so adapted, arranged, capable,configured, enabled, operable, or operative. Additionally, although thisdisclosure describes or illustrates particular embodiments as providingparticular advantages, particular embodiments may provide none, some, orall of these advantages.

The invention claimed is:
 1. A computer implemented method comprising:generating, by a computing system, a container effect that definesvirtual effects for a category of objects associated with the containereffect; associating, by the computing system, a first object with thecontainer effect, by receiving information regarding an object categoryfor the first object and matching the object category to the category ofobjects associated with the container effect; validating the associationof the first object with the container effect by analyzing the firstmodel of the first object and the virtual effects defined by thecontainer effect to determine that the virtual effects defined by thecontainer effect correspond to the first object, analyzing to determinea presence of artifacts during rendering of the first object with thevirtual effects defined by the container effect, or a combinationthereof; and generating, by the computing system, a virtual environmentincluding the first object by retrieving a first model of the firstobject from a first object database and retrieving the virtual effectsdefined by the container effect from an effect database, distinct fromthe first object database, and utilizing the first model of the firstobject and the virtual effects defined by the container effect to rendera virtual representation of the first object.
 2. The computerimplemented method of claim 1, wherein generating the virtualenvironment further comprises retrieving image data from a camera andcombining the image data with the virtual representation of the firstobject.
 3. The computer implemented method of claim 2, furthercomprising defining a collection including a reference to the firstobject; receiving updated image data; and generating a new virtualenvironment based on the collection and the updated image data bycombining the updated image data with the first model of the firstobject and the virtual effects defined by the container effect for thefirst object.
 4. The computer implemented method of claim 3, whereingenerating the new virtual environment based on the collection and theupdated image data further includes receiving one or more updatedparameters corresponding to the first object.
 5. A computer implementedmethod comprising: generating, by a computing system, a container effectthat defines virtual effects for a category of objects associated withthe container effect; associating, by the computing system, a firstobject with the container effect, by receiving information regarding anobject category for the first object and matching the object category tothe category of objects associated with the container effect;generating, by the computing system, a virtual environment including thefirst object by retrieving a first model of the first object from afirst object database associated with a first third party and retrievingthe virtual effects defined by the container effect from an effectdatabase, distinct from the first object database, and utilizing thefirst model of the first object and the virtual effects defined by thecontainer effect to render a virtual representation of the first object;and modifying the virtual environment to display a second object byretrieving a second model corresponding to the second object from asecond object database associated with a second third party distinctfrom the first third party, and utilizing the container effect to rendera virtual representation of the second object based on the second modelcorresponding to the second object, wherein virtual effects of thevirtual representation of the second object are same as the virtualeffects defined by the container effect for the virtual representationof the first object.
 6. The computer implemented method of claim 5,wherein generating the virtual environment further comprises retrievingimage data from a camera and combining the image data with the virtualrepresentation of the first object.
 7. The computer implemented methodof claim 5, further comprising validating the association of the firstobject with the container effect by analyzing the first model of thefirst object and the virtual effects defined by the container effect todetermine that the virtual effects defined by the container effectcorrespond to the first object, analyzing to determine a presence ofartifacts during rendering of the first object with the virtual effectsdefined by the container effect, or a combination thereof.
 8. A computerimplemented method comprising: associating by a computer system a firstobject with a first container effect, the first container effectdefining one or more virtual effects; associating by the computer systema second object with the first container effect; and publishing by thecomputer system an environment including the first object and the secondobject by retrieving and applying the one or more virtual effectsdefined by the first container effect to a first model of the firstobject retrieved from a first object database associated with a firstthird party and a second model of the second object retrieved from asecond object database associated with a second third party distinctfrom the first third party, wherein the first model of the first objectand the second model of the second object are retrieved separately fromthe one or more virtual effects.
 9. The computer implemented method ofclaim 8, further comprising validating the association of the firstobject with the first container effect.
 10. The computer implementedmethod of claim 8, wherein the one or more virtual effects are stored inan effect database that is distinct from the first object database andthe second object database.
 11. The computer implemented method of claim8, wherein publishing the environment including the first object furthercomprises combining the first model of the first object and the one ormore virtual effects with image data.
 12. The computer implementedmethod of claim 8, wherein the one or more virtual effects define atleast one of lighting, position, orientation, or order of an associatedobject within the environment.
 13. The computer implemented method ofclaim 8, wherein the first object and the second object are published inthe environment at different points in time.
 14. A non-transitorycomputer readable storage medium including instructions that whenexecuted by at least one processor of a computing system cause thecomputing system to perform a method comprising: generating a containereffect that defines effect characteristics for a category of objects;assigning a first object to the container effect, the container effectdetermining the effect characteristics for the first object in a virtualenvironment; retrieving shape information for the first object from afirst object database associated with a first third party; retrievingthe effect characteristics from an effect database distinct from thefirst object database; rendering a virtual representation of the firstobject by applying the effect characteristics of the container effect tothe shape information of the first object; generating an effect displayby integrating the virtual representation of the first object with imagedata; providing the effect display for presentation; and associating asecond object with the container effect; retrieving shape informationfor the second object from a second object database associated with asecond third party that is distinct from the first third party;rendering a second virtual representation of the second object byapplying the effect characteristic of the container effect to a shape ofthe second object; generating an updated effect display by integratingthe second virtual representation of the second object with the imagedata; and providing the updated effect display for presentation.
 15. Thenon-transitory computer readable storage medium of claim 14, wherein themethod further comprises validating the assignment of the first objectto the container effect.
 16. The non-transitory computer readablestorage medium of claim 14, wherein the image data is video data from auser device.
 17. The non-transitory computer readable storage medium ofclaim 14, wherein assigning the first object to the container effectcomprises: identifying an object type; and determining that the objecttype matches the category of objects.
 18. The non-transitory computerreadable storage medium of claim 14, wherein the effect characteristicsare generic to multiple objects assigned to the container effect.